package com.kai.base.base.activity

import android.os.Bundle
import com.kai.base.R
import com.kai.base.databinding.BaseActivityNavBinding

/**
 * @Author: 小强同学
 * @Date:  2021/1/18 16:27
 * @Description: 带标题的基类
 */
open class BaseNavActivity : BaseVBActivity<BaseActivityNavBinding>() {

    override fun getViewBinding(): BaseActivityNavBinding = BaseActivityNavBinding.inflate(layoutInflater)

    override fun initViews() {
        super.initViews()
        // 设置是否展示标题栏
        setShowToolBar(isShowToolBar())
        mDelegate.setBackIcon(
            mBaseActViewBind.navToolbar.toolbar,
            isShowBackIcon()
        ) { onBackClick() }
        // 设置填充容器
        if (mBaseActViewBind.navLayout.childCount > 0) {
            mBaseActViewBind.navLayout.removeAllViews()
        }
        layoutInflater.inflate(getContentView(), mBaseActViewBind.navLayout)
        if (isShowToolBar()) {
            setPageTitle(getPageTitle())
        }

    }

    protected fun setPageTitle(title: String?) {
        mBaseActViewBind.navToolbar.toolbar?.title = ""
        setText(mBaseActViewBind.navToolbar.titleTv, title)
    }

    /**
     * 执行返回操作
     */
    protected open fun onBackClick() {
        finish()
    }

    /**
     * 设置ToolBar的展示状态
     * @param isShow 是否展示
     */
    private fun setShowToolBar(isShow: Boolean) {
        setVisibility(mBaseActViewBind.appBarLayout, isShow)
        setVisibility(mBaseActViewBind.statusView, isShow)
    }

    protected open fun getPageTitle(): String? = null

    /**
     * 子类继续填充内容容器布局
     */
    protected open fun getContentView(): Int = 0

    /**
     * 是否展示ToolBar，如果设置为false则不展示。
     * 如果不展示标题栏，则状态栏也不会展示。
     */
    protected open fun isShowToolBar(): Boolean = true

    /**
     * 是否可以返回，如果可以则展示返回按钮，并且设置返回事件
     * 默认可以返回
     */
    protected open fun isShowBackIcon(): Boolean = true

}